﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Coolite.Ext.Web;
using QFD.Controller;

namespace QFD.View.UnidadeDeNegocio
{
    public partial class frmUnidadeDeNegocio : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Ext.IsAjaxRequest)
            {
                this.StoreCoorporacao.DataSource = ControllerCoorporacao.getListaCoorporacao();
                this.StoreCoorporacao.DataBind();
            }
        }

        public Store GridStore
        {
            get;
            set;
        }

        protected void Refresh(object sender, StoreRefreshDataEventArgs e)
        {
            this.StoreCoorporacao.DataSource = ControllerCoorporacao.getListaCoorporacao();
            this.StoreCoorporacao.DataBind();
        }

        protected void SaveUnidadeDeNegocio(object sender, AjaxEventArgs e)
        {
            try
            {
                using (QFDDataContext context = new QFDDataContext())
                {
                    string id = this.txt_cdUnidadeDeNegocio.Text;

                    if (id.Equals(""))
                    {
                        UNIDADENEGOCIO unidadeNegocio = new UNIDADENEGOCIO();
                        unidadeNegocio.NMUNIDADENEGOCIO = this.txtNameUnidadeDeNegocio.Text.Trim();
                        unidadeNegocio.DSUNIDADENEGOCIO = this.txtDesUnidadeDeNegocio.Text.Trim();
                        int coorporacao = int.Parse(this.txtCoorporacao.SelectedItem.Value.Trim());
                        unidadeNegocio.CDCOORPORACAO = coorporacao;
                        
                        ControllerUnidadeDeNegocio.addUnidadeDeNegocio(unidadeNegocio);
                        ClearWindow(Controls);
                        this.GridStore.AddScript(string.Format("{0}.reload();", this.GridStore.ClientID));
                        FormStatusBar.SetStatus(new StatusBarStatusConfig { Text = "Cadastro efetuado com sucesso!", IconCls = "", Clear2 = true });

                    }
                    else
                    {
                        UNIDADENEGOCIO unidadeNegocio = ControllerUnidadeDeNegocio.getByUnidadeDeNegocio(int.Parse(id));
                        unidadeNegocio.NMUNIDADENEGOCIO = this.txtNameUnidadeDeNegocio.Text.Trim();
                        unidadeNegocio.DSUNIDADENEGOCIO = this.txtDesUnidadeDeNegocio.Text.Trim();
                        int coorporacao = int.Parse(this.txtCoorporacao.SelectedItem.Value.Trim());
                        unidadeNegocio.CDCOORPORACAO = coorporacao;
                        ControllerUnidadeDeNegocio.updateCoorporacao(unidadeNegocio);
                        this.winFrmUnidadeDeNegocio.Hide();
                        ClearWindow(Controls);
                        this.GridStore.AddScript(string.Format("{0}.reload();", this.GridStore.ClientID));
                        Ext.Msg.Alert("Alerta!", "Unidade de Negócio <br>" + unidadeNegocio.NMUNIDADENEGOCIO + " </br> atualizado com sucesso!").Show();
                        FormStatusBar.SetStatus(new StatusBarStatusConfig { Text = "Cadastro atualizado com sucesso!", IconCls = "", Clear2 = true });
                    }
                }
            }
            catch
            {
                Ext.Msg.Alert("Alerta!", "Ocorreu um erro durante a transação! Tente novamente!").Show();
            }

        }

        public void ShowUnidadeDeNegocio()
        {
            this.winFrmUnidadeDeNegocio.Show();
        }

        public void SetUnidadeDeNegocio(UNIDADENEGOCIO unidadeNegocio)
        {
            this.txt_cdUnidadeDeNegocio.Text = unidadeNegocio.CDUNIDADENEGOCIO.ToString();
            this.txtNameUnidadeDeNegocio.Text = unidadeNegocio.NMUNIDADENEGOCIO;
            this.txtDesUnidadeDeNegocio.Text = unidadeNegocio.DSUNIDADENEGOCIO;
            txtCoorporacao.SetValue(unidadeNegocio.CDCOORPORACAO);
        }

        protected void CloseFrmUnidadeDeNegocio(object sender, AjaxEventArgs e)
        {
            this.winFrmUnidadeDeNegocio.Hide();
            ClearWindow(Controls);
        }

        public void ClearWindow(ControlCollection AllControls)
        {
            foreach (Control c in AllControls)
            {
                if (c is TextField)
                {
                    ((TextField)c).Text = "";
                }
                if (c is ComboBox)
                {
                    ((ComboBox)c).Value = null;
                }
                if (c is Checkbox)
                {
                    ((Checkbox)c).Checked = true;
                }
                if (c is Hidden)
                {
                    ((Hidden)c).Text = "";
                }
                ClearWindow(c.Controls);
            }
        }
    }
}